import java.util.*;

/**
 * Created with IntelliJ IDEA.
 * User:xieChao
 * Date:2022/10/18 18:45
 */
public class HashTest {
    //key是关键字，value是 key 出现的次数

    /**
     * N个数据中，统计每个数据出现的次数
     * 核心代码部分
     * @param array
     * @return
     */
    public static Map<Integer,Integer> func1(int[] array){
        Map<Integer,Integer> map = new HashMap<>();
        //判断array中的元素 是否在map当中，如果不在就是1  在原来的基础上 +1
        for (int x:array) {

            //get()返回key对应的value

            if(map.get(x) == null){
                map.put(x,1);

                //x相当于key关键字
                //put()    设置key对应的value

            }else{
                int val = map.get(x);
                //val记录 x 出现的次数
                map.put(x,val+1);
            }
        }
        return map;
    }

    /**
     * 数据去重
     * @param array
     * @return
     */
    public static Set<Integer> func2(int[] array){
        Set<Integer> set = new HashSet<>();
        for (int i:array){
            set.add(i);
        }
        return set;
    }

    /**
     * 找出第一个重复的数据
     * @param array
     * @return
     */
    public static int func3(int[] array) {
        Set<Integer> set1 = new HashSet<>();
        for (int j:array) {
            if(set1.contains(j)){
               return j;
            }
            set1.add(j);
        }
        return -1;
    }




        public static void main(String[] args) {
        int[] array = new int[1000];//10w个数据
        Random random = new Random();
        for (int i = 0; i < array.length; i++) {
            array[i] = random.nextInt(100);
        }
           Map<Integer,Integer> map = func1(array);
           Set<Integer> set = func2(array);
           int set1 = func3(array);
            System.out.println(set1);
            System.out.println(map);
            System.out.println(set);
    }
}
